Error when calling this function.... - Mailing list pgsql-novice

From Dan Jewett
Subject Error when calling this function....
Date
Msg-id p05200f01ba0962c3d9e4@[162.84.132.56]
Whole thread Raw
List pgsql-novice
Am I wrong to assume that I can simply call the following function
with SELECT catalog_batch(); ?
Additionally, I am still unclear as to how I should handle the return
type for this function.  Is what I have ok?  Should the word Complete
in the return statement be quoted?


CREATE FUNCTION catalog_batch() RETURNS text AS '

    DECLARE
        mp3rec RECORD;
    BEGIN
        FOR mp3rec IN SELECT * FROM mp3catalog LOOP

        INSERT INTO album (title, media, path, release_date)
VALUES (mp3catalog.album, mp3catalog.audioformat, mp3catalog.path,
mp3catalog.year);

        INSERT INTO track (album_id, trk_no, trk_title, time,
genre, bitrate, channel, notes) VALUES (SELECT
currval("album_album_id_seq"), mp3catalog.track, mp3catalog.title,
mp3catalog.time, mp3catalog.genre, mp3catalog.bitrate,
mp3catalog.channels, mp3catalog.comment);

        INSERT INTO participant (name) VALUES (mp3catalog.artist);

        INSERT INTO performance (album_id, participant_id)
VALUES (SELECT currval("album_album_id_seq"), SELECT
currval("participant_participant_id_seq"));

        END LOOP;
        RETURN Complete;
    END;'

    LANGUAGE 'plpgsql';

recordings=> select catalog_batch();
NOTICE:  Error occurred while executing PL/pgSQL function catalog_batch
NOTICE:  line 9 at SQL statement
ERROR:  parser: parse error at or near "SELECT"

and from phpPgAdmin:

Database recordings

No table detected... unable to retrieve primary or unique keys for edit/delete
Error - /Library/WebServer/Documents/phpPgAdmin/sql.php -- Line: 112

PostgreSQL said: ERROR: parser: parse error at or near "SELECT"
Your query:
select catalog_batch()


pgsql-novice by date:

Previous
From: "Patrick Hatcher"
Date:
Subject: Re: importing DB2 timestamp?
Next
From: "Graham Bartlett"
Date:
Subject: What is the maximum amount of connections a postgres database will take